<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>OpenMesh: OpenMesh::Decimater::DecimaterT&lt; MeshT &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="logo_align.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="rwth_vci_rgb.jpg"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">OpenMesh
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('a02637.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a02634.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">OpenMesh::Decimater::DecimaterT&lt; MeshT &gt; Class Template Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><a class="el" href="a01240.html" title="Software related to mesh decimation. ">Decimater</a> framework.  
 <a href="a02637.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="a00551_source.html">OpenMesh/Tools/Decimater/DecimaterT.hh</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for OpenMesh::Decimater::DecimaterT&lt; MeshT &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="a02636.png" border="0" usemap="#OpenMesh_1_1Decimater_1_1DecimaterT_3_01MeshT_01_4_inherit__map" alt="Inheritance graph"/></div>
<map name="OpenMesh_1_1Decimater_1_1DecimaterT_3_01MeshT_01_4_inherit__map" id="OpenMesh_1_1Decimater_1_1DecimaterT_3_01MeshT_01_4_inherit__map">
<area shape="rect" id="node4" href="a02649.html" title="Mixed decimater framework. " alt="" coords="9,259,206,300"/>
<area shape="rect" id="node2" href="a02629.html" title="OpenMesh::Decimater\l::BaseDecimaterT\&lt; MeshT \&gt;" alt="" coords="11,80,203,121"/>
<area shape="rect" id="node3" href="a02533.html" title="This class demonstrates the non copyable idiom. " alt="" coords="5,5,209,32"/>
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for OpenMesh::Decimater::DecimaterT&lt; MeshT &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="a02635.png" border="0" usemap="#OpenMesh_1_1Decimater_1_1DecimaterT_3_01MeshT_01_4_coll__map" alt="Collaboration graph"/></div>
<map name="OpenMesh_1_1Decimater_1_1DecimaterT_3_01MeshT_01_4_coll__map" id="OpenMesh_1_1Decimater_1_1DecimaterT_3_01MeshT_01_4_coll__map">
<area shape="rect" id="node2" href="a02629.html" title="OpenMesh::Decimater\l::BaseDecimaterT\&lt; MeshT \&gt;" alt="" coords="11,80,203,121"/>
<area shape="rect" id="node3" href="a02533.html" title="This class demonstrates the non copyable idiom. " alt="" coords="5,5,209,32"/>
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02641.html">HeapInterface</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Heap interface.  <a href="a02641.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a56387852bafbda2cd245b08ea2d0008e"><td class="memItemLeft" align="right" valign="top"><a id="a56387852bafbda2cd245b08ea2d0008e"></a>
typedef <a class="el" href="a02637.html">DecimaterT</a>&lt; MeshT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Self</b></td></tr>
<tr class="separator:a56387852bafbda2cd245b08ea2d0008e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c5207a20bd2e5adfd2bb35f82719694"><td class="memItemLeft" align="right" valign="top"><a id="a3c5207a20bd2e5adfd2bb35f82719694"></a>
typedef MeshT&#160;</td><td class="memItemRight" valign="bottom"><b>Mesh</b></td></tr>
<tr class="separator:a3c5207a20bd2e5adfd2bb35f82719694"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4bc78e9bb2a26693eda5ad817dd8308"><td class="memItemLeft" align="right" valign="top"><a id="ac4bc78e9bb2a26693eda5ad817dd8308"></a>
typedef <a class="el" href="a02633.html">CollapseInfoT</a>&lt; MeshT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>CollapseInfo</b></td></tr>
<tr class="separator:ac4bc78e9bb2a26693eda5ad817dd8308"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c16ba0c94ecaa849bfdfa31148ac5ff"><td class="memItemLeft" align="right" valign="top"><a id="a2c16ba0c94ecaa849bfdfa31148ac5ff"></a>
typedef <a class="el" href="a02661.html">ModBaseT</a>&lt; MeshT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Module</b></td></tr>
<tr class="separator:a2c16ba0c94ecaa849bfdfa31148ac5ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0846b1d3f4ac5dc6a1aa32a9e7efc7b6"><td class="memItemLeft" align="right" valign="top"><a id="a0846b1d3f4ac5dc6a1aa32a9e7efc7b6"></a>
typedef std::vector&lt; <a class="el" href="a02661.html">Module</a> *&gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ModuleList</b></td></tr>
<tr class="separator:a0846b1d3f4ac5dc6a1aa32a9e7efc7b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d925514a38016c7bd90b4047655f0cc"><td class="memItemLeft" align="right" valign="top"><a id="a7d925514a38016c7bd90b4047655f0cc"></a>
typedef ModuleList::iterator&#160;</td><td class="memItemRight" valign="bottom"><b>ModuleListIterator</b></td></tr>
<tr class="separator:a7d925514a38016c7bd90b4047655f0cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45a4df1d970e4d3ed619029ea80fe30f"><td class="memItemLeft" align="right" valign="top"><a id="a45a4df1d970e4d3ed619029ea80fe30f"></a>
typedef Mesh::VertexHandle&#160;</td><td class="memItemRight" valign="bottom"><b>VertexHandle</b></td></tr>
<tr class="separator:a45a4df1d970e4d3ed619029ea80fe30f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6214e337d0b42e74ef2f8ec93b67319d"><td class="memItemLeft" align="right" valign="top"><a id="a6214e337d0b42e74ef2f8ec93b67319d"></a>
typedef Mesh::HalfedgeHandle&#160;</td><td class="memItemRight" valign="bottom"><b>HalfedgeHandle</b></td></tr>
<tr class="separator:a6214e337d0b42e74ef2f8ec93b67319d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22d1340e2ee838d396a6aba82135e4c9"><td class="memItemLeft" align="right" valign="top"><a id="a22d1340e2ee838d396a6aba82135e4c9"></a>
typedef <a class="el" href="a03073.html">Utils::HeapT</a>&lt; VertexHandle, <a class="el" href="a02641.html">HeapInterface</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>DeciHeap</b></td></tr>
<tr class="separator:a22d1340e2ee838d396a6aba82135e4c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_a02629"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a02629')"><img src="closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="a02629.html">OpenMesh::Decimater::BaseDecimaterT&lt; MeshT &gt;</a></td></tr>
<tr class="memitem:acf71a7f9e9717f9a1be7e0d10bc84615 inherit pub_types_a02629"><td class="memItemLeft" align="right" valign="top"><a id="acf71a7f9e9717f9a1be7e0d10bc84615"></a>
typedef <a class="el" href="a02629.html">BaseDecimaterT</a>&lt; MeshT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Self</b></td></tr>
<tr class="separator:acf71a7f9e9717f9a1be7e0d10bc84615 inherit pub_types_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b1d851255dd19a1fad12f47304e105b inherit pub_types_a02629"><td class="memItemLeft" align="right" valign="top"><a id="a8b1d851255dd19a1fad12f47304e105b"></a>
typedef MeshT&#160;</td><td class="memItemRight" valign="bottom"><b>Mesh</b></td></tr>
<tr class="separator:a8b1d851255dd19a1fad12f47304e105b inherit pub_types_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e0e078a178ebfcaa0d567cafabf0d93 inherit pub_types_a02629"><td class="memItemLeft" align="right" valign="top"><a id="a0e0e078a178ebfcaa0d567cafabf0d93"></a>
typedef <a class="el" href="a02633.html">CollapseInfoT</a>&lt; MeshT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>CollapseInfo</b></td></tr>
<tr class="separator:a0e0e078a178ebfcaa0d567cafabf0d93 inherit pub_types_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d74f124a7f8ae0c471760fe34bae571 inherit pub_types_a02629"><td class="memItemLeft" align="right" valign="top"><a id="a2d74f124a7f8ae0c471760fe34bae571"></a>
typedef <a class="el" href="a02661.html">ModBaseT</a>&lt; MeshT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Module</b></td></tr>
<tr class="separator:a2d74f124a7f8ae0c471760fe34bae571 inherit pub_types_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa1e4a65ab8d2507eecfe16553c9a2b8 inherit pub_types_a02629"><td class="memItemLeft" align="right" valign="top"><a id="aaa1e4a65ab8d2507eecfe16553c9a2b8"></a>
typedef std::vector&lt; <a class="el" href="a02661.html">Module</a> *&gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ModuleList</b></td></tr>
<tr class="separator:aaa1e4a65ab8d2507eecfe16553c9a2b8 inherit pub_types_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a630207b818e071bc7f6b10e5d7bc8801 inherit pub_types_a02629"><td class="memItemLeft" align="right" valign="top"><a id="a630207b818e071bc7f6b10e5d7bc8801"></a>
typedef ModuleList::iterator&#160;</td><td class="memItemRight" valign="bottom"><b>ModuleListIterator</b></td></tr>
<tr class="separator:a630207b818e071bc7f6b10e5d7bc8801 inherit pub_types_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:acf185e9dd3958b8634d26ff322f80685"><td class="memItemLeft" align="right" valign="top"><a id="acf185e9dd3958b8634d26ff322f80685"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02637.html#acf185e9dd3958b8634d26ff322f80685">DecimaterT</a> (Mesh &amp;_mesh)</td></tr>
<tr class="memdesc:acf185e9dd3958b8634d26ff322f80685"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br /></td></tr>
<tr class="separator:acf185e9dd3958b8634d26ff322f80685"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d1b1b6855f42b5501860ae79cf6be64"><td class="memItemLeft" align="right" valign="top"><a id="a6d1b1b6855f42b5501860ae79cf6be64"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02637.html#a6d1b1b6855f42b5501860ae79cf6be64">~DecimaterT</a> ()</td></tr>
<tr class="memdesc:a6d1b1b6855f42b5501860ae79cf6be64"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:a6d1b1b6855f42b5501860ae79cf6be64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae68360f349a3aeb6b8a01a7ea4af7ea3"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02637.html#ae68360f349a3aeb6b8a01a7ea4af7ea3">decimate</a> (size_t _n_collapses=0)</td></tr>
<tr class="memdesc:ae68360f349a3aeb6b8a01a7ea4af7ea3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform a number of collapses on the mesh.  <a href="#ae68360f349a3aeb6b8a01a7ea4af7ea3">More...</a><br /></td></tr>
<tr class="separator:ae68360f349a3aeb6b8a01a7ea4af7ea3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a314edcd690ba54b6b77dde411e04262a"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02637.html#a314edcd690ba54b6b77dde411e04262a">decimate_to</a> (size_t _n_vertices)</td></tr>
<tr class="memdesc:a314edcd690ba54b6b77dde411e04262a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decimate the mesh to a desired target vertex complexity.  <a href="#a314edcd690ba54b6b77dde411e04262a">More...</a><br /></td></tr>
<tr class="separator:a314edcd690ba54b6b77dde411e04262a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f9e5d0abce8d73b67cf2bbf17700241"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02637.html#a3f9e5d0abce8d73b67cf2bbf17700241">decimate_to_faces</a> (size_t _n_vertices=0, size_t _n_faces=0)</td></tr>
<tr class="memdesc:a3f9e5d0abce8d73b67cf2bbf17700241"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attempts to decimate the mesh until a desired vertex or face complexity is achieved.  <a href="#a3f9e5d0abce8d73b67cf2bbf17700241">More...</a><br /></td></tr>
<tr class="separator:a3f9e5d0abce8d73b67cf2bbf17700241"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_a02629"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a02629')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="a02629.html">OpenMesh::Decimater::BaseDecimaterT&lt; MeshT &gt;</a></td></tr>
<tr class="memitem:adcba4546553667f83876afc88f2e36cc inherit pub_methods_a02629"><td class="memItemLeft" align="right" valign="top"><a id="adcba4546553667f83876afc88f2e36cc"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>BaseDecimaterT</b> (Mesh &amp;_mesh)</td></tr>
<tr class="separator:adcba4546553667f83876afc88f2e36cc inherit pub_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b828064b2a7fa5b03b637bae507ac62 inherit pub_methods_a02629"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02629.html#a6b828064b2a7fa5b03b637bae507ac62">initialize</a> ()</td></tr>
<tr class="memdesc:a6b828064b2a7fa5b03b637bae507ac62 inherit pub_methods_a02629"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize decimater and decimating modules.  <a href="a02629.html#a6b828064b2a7fa5b03b637bae507ac62">More...</a><br /></td></tr>
<tr class="separator:a6b828064b2a7fa5b03b637bae507ac62 inherit pub_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac01a4c49f9efd1de8ef886f7ff2b58ca inherit pub_methods_a02629"><td class="memItemLeft" align="right" valign="top"><a id="ac01a4c49f9efd1de8ef886f7ff2b58ca"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02629.html#ac01a4c49f9efd1de8ef886f7ff2b58ca">is_initialized</a> () const</td></tr>
<tr class="memdesc:ac01a4c49f9efd1de8ef886f7ff2b58ca inherit pub_methods_a02629"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether decimater has been successfully initialized. <br /></td></tr>
<tr class="separator:ac01a4c49f9efd1de8ef886f7ff2b58ca inherit pub_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a007b3d7e3620ecb3d99516945259f4 inherit pub_methods_a02629"><td class="memItemLeft" align="right" valign="top"><a id="a0a007b3d7e3620ecb3d99516945259f4"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02629.html#a0a007b3d7e3620ecb3d99516945259f4">info</a> (std::ostream &amp;_os)</td></tr>
<tr class="memdesc:a0a007b3d7e3620ecb3d99516945259f4 inherit pub_methods_a02629"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print information about modules to _os. <br /></td></tr>
<tr class="separator:a0a007b3d7e3620ecb3d99516945259f4 inherit pub_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a596e2729e5a998715b535590fcfd00c8 inherit pub_methods_a02629"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02629.html#a596e2729e5a998715b535590fcfd00c8">set_observer</a> (<a class="el" href="a02701.html">Observer</a> *_o)</td></tr>
<tr class="memdesc:a596e2729e5a998715b535590fcfd00c8 inherit pub_methods_a02629"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add observer.  <a href="a02629.html#a596e2729e5a998715b535590fcfd00c8">More...</a><br /></td></tr>
<tr class="separator:a596e2729e5a998715b535590fcfd00c8 inherit pub_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9018b5e7fcc152cc7d85a6a99bf02bd5 inherit pub_methods_a02629"><td class="memItemLeft" align="right" valign="top"><a id="a9018b5e7fcc152cc7d85a6a99bf02bd5"></a>
<a class="el" href="a02701.html">Observer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02629.html#a9018b5e7fcc152cc7d85a6a99bf02bd5">observer</a> ()</td></tr>
<tr class="memdesc:a9018b5e7fcc152cc7d85a6a99bf02bd5 inherit pub_methods_a02629"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get current observer of a decimater. <br /></td></tr>
<tr class="separator:a9018b5e7fcc152cc7d85a6a99bf02bd5 inherit pub_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5d6598dced77ec6d97823559a3e58dc inherit pub_methods_a02629"><td class="memItemLeft" align="right" valign="top"><a id="aa5d6598dced77ec6d97823559a3e58dc"></a>
Mesh &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02629.html#aa5d6598dced77ec6d97823559a3e58dc">mesh</a> ()</td></tr>
<tr class="memdesc:aa5d6598dced77ec6d97823559a3e58dc inherit pub_methods_a02629"><td class="mdescLeft">&#160;</td><td class="mdescRight">access mesh. used in modules. <br /></td></tr>
<tr class="separator:aa5d6598dced77ec6d97823559a3e58dc inherit pub_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2168dd685ec75cc239516d2570703036 inherit pub_methods_a02629"><td class="memTemplParams" colspan="2"><a id="a2168dd685ec75cc239516d2570703036"></a>
template&lt;typename _Module &gt; </td></tr>
<tr class="memitem:a2168dd685ec75cc239516d2570703036 inherit pub_methods_a02629"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a02629.html#a2168dd685ec75cc239516d2570703036">add</a> (<a class="el" href="a02657.html">ModHandleT</a>&lt; _Module &gt; &amp;_mh)</td></tr>
<tr class="memdesc:a2168dd685ec75cc239516d2570703036 inherit pub_methods_a02629"><td class="mdescLeft">&#160;</td><td class="mdescRight">add module to decimater <br /></td></tr>
<tr class="separator:a2168dd685ec75cc239516d2570703036 inherit pub_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b81adeaacfda9773ff6c3584f1f014b inherit pub_methods_a02629"><td class="memTemplParams" colspan="2"><a id="a0b81adeaacfda9773ff6c3584f1f014b"></a>
template&lt;typename _Module &gt; </td></tr>
<tr class="memitem:a0b81adeaacfda9773ff6c3584f1f014b inherit pub_methods_a02629"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a02629.html#a0b81adeaacfda9773ff6c3584f1f014b">remove</a> (<a class="el" href="a02657.html">ModHandleT</a>&lt; _Module &gt; &amp;_mh)</td></tr>
<tr class="memdesc:a0b81adeaacfda9773ff6c3584f1f014b inherit pub_methods_a02629"><td class="mdescLeft">&#160;</td><td class="mdescRight">remove module <br /></td></tr>
<tr class="separator:a0b81adeaacfda9773ff6c3584f1f014b inherit pub_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9854adb7ec9f2419ece2067b5f237cfa inherit pub_methods_a02629"><td class="memTemplParams" colspan="2"><a id="a9854adb7ec9f2419ece2067b5f237cfa"></a>
template&lt;typename Module &gt; </td></tr>
<tr class="memitem:a9854adb7ec9f2419ece2067b5f237cfa inherit pub_methods_a02629"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a02661.html">Module</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a02629.html#a9854adb7ec9f2419ece2067b5f237cfa">module</a> (<a class="el" href="a02657.html">ModHandleT</a>&lt; <a class="el" href="a02661.html">Module</a> &gt; &amp;_mh)</td></tr>
<tr class="memdesc:a9854adb7ec9f2419ece2067b5f237cfa inherit pub_methods_a02629"><td class="mdescLeft">&#160;</td><td class="mdescRight">get module referenced by handle _mh <br /></td></tr>
<tr class="separator:a9854adb7ec9f2419ece2067b5f237cfa inherit pub_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_methods_a02629"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a02629')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="a02629.html">OpenMesh::Decimater::BaseDecimaterT&lt; MeshT &gt;</a></td></tr>
<tr class="memitem:a181b92fd81aea37771dbbe9d0f7b4b30 inherit pro_methods_a02629"><td class="memItemLeft" align="right" valign="top"><a id="a181b92fd81aea37771dbbe9d0f7b4b30"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02629.html#a181b92fd81aea37771dbbe9d0f7b4b30">notify_observer</a> (size_t _n_collapses)</td></tr>
<tr class="memdesc:a181b92fd81aea37771dbbe9d0f7b4b30 inherit pro_methods_a02629"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns false, if abort requested by observer <br /></td></tr>
<tr class="separator:a181b92fd81aea37771dbbe9d0f7b4b30 inherit pro_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7999f437ff1a15e28f1621b77f62974e inherit pro_methods_a02629"><td class="memItemLeft" align="right" valign="top"><a id="a7999f437ff1a15e28f1621b77f62974e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02629.html#a7999f437ff1a15e28f1621b77f62974e">set_uninitialized</a> ()</td></tr>
<tr class="memdesc:a7999f437ff1a15e28f1621b77f62974e inherit pro_methods_a02629"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset the initialized flag, and clear the bmodules_ and cmodule_. <br /></td></tr>
<tr class="separator:a7999f437ff1a15e28f1621b77f62974e inherit pro_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11f4e99daaa70662eb5556115b7ba68b inherit pro_methods_a02629"><td class="memItemLeft" align="right" valign="top"><a id="a11f4e99daaa70662eb5556115b7ba68b"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>update_modules</b> (<a class="el" href="a02633.html">CollapseInfo</a> &amp;_ci)</td></tr>
<tr class="separator:a11f4e99daaa70662eb5556115b7ba68b inherit pro_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebbb2f4afd23574937109486a4ac6d1b inherit pro_methods_a02629"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02629.html#aebbb2f4afd23574937109486a4ac6d1b">is_collapse_legal</a> (const <a class="el" href="a02633.html">CollapseInfo</a> &amp;_ci)</td></tr>
<tr class="memdesc:aebbb2f4afd23574937109486a4ac6d1b inherit pro_methods_a02629"><td class="mdescLeft">&#160;</td><td class="mdescRight">Is an edge collapse legal? Performs topological test only.  <a href="a02629.html#aebbb2f4afd23574937109486a4ac6d1b">More...</a><br /></td></tr>
<tr class="separator:aebbb2f4afd23574937109486a4ac6d1b inherit pro_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3046073cf42608d314df3c4dfc2d49b4 inherit pro_methods_a02629"><td class="memItemLeft" align="right" valign="top"><a id="a3046073cf42608d314df3c4dfc2d49b4"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02629.html#a3046073cf42608d314df3c4dfc2d49b4">collapse_priority</a> (const <a class="el" href="a02633.html">CollapseInfo</a> &amp;_ci)</td></tr>
<tr class="memdesc:a3046073cf42608d314df3c4dfc2d49b4 inherit pro_methods_a02629"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate priority of an halfedge collapse (using the modules) <br /></td></tr>
<tr class="separator:a3046073cf42608d314df3c4dfc2d49b4 inherit pro_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a2763cdc33d785a1f53aed2168a7189 inherit pro_methods_a02629"><td class="memItemLeft" align="right" valign="top"><a id="a5a2763cdc33d785a1f53aed2168a7189"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02629.html#a5a2763cdc33d785a1f53aed2168a7189">preprocess_collapse</a> (<a class="el" href="a02633.html">CollapseInfo</a> &amp;_ci)</td></tr>
<tr class="memdesc:a5a2763cdc33d785a1f53aed2168a7189 inherit pro_methods_a02629"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pre-process a collapse. <br /></td></tr>
<tr class="separator:a5a2763cdc33d785a1f53aed2168a7189 inherit pro_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a3153d5847b381262fc15d110c3f10e inherit pro_methods_a02629"><td class="memItemLeft" align="right" valign="top"><a id="a8a3153d5847b381262fc15d110c3f10e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02629.html#a8a3153d5847b381262fc15d110c3f10e">postprocess_collapse</a> (<a class="el" href="a02633.html">CollapseInfo</a> &amp;_ci)</td></tr>
<tr class="memdesc:a8a3153d5847b381262fc15d110c3f10e inherit pro_methods_a02629"><td class="mdescLeft">&#160;</td><td class="mdescRight">Post-process a collapse. <br /></td></tr>
<tr class="separator:a8a3153d5847b381262fc15d110c3f10e inherit pro_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ee8ed71b9fdf8524d12cfae47f63ed9 inherit pro_methods_a02629"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02629.html#a2ee8ed71b9fdf8524d12cfae47f63ed9">set_error_tolerance_factor</a> (double _factor)</td></tr>
<tr class="memdesc:a2ee8ed71b9fdf8524d12cfae47f63ed9 inherit pro_methods_a02629"><td class="mdescLeft">&#160;</td><td class="mdescRight">This provides a function that allows the setting of a percentage of the original constraint of the modules.  <a href="a02629.html#a2ee8ed71b9fdf8524d12cfae47f63ed9">More...</a><br /></td></tr>
<tr class="separator:a2ee8ed71b9fdf8524d12cfae47f63ed9 inherit pro_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae97d95611924a0630a111543d2c8bf1e inherit pro_methods_a02629"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02629.html#ae97d95611924a0630a111543d2c8bf1e">reset</a> ()</td></tr>
<tr class="memdesc:ae97d95611924a0630a111543d2c8bf1e inherit pro_methods_a02629"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset the status of this class.  <a href="a02629.html#ae97d95611924a0630a111543d2c8bf1e">More...</a><br /></td></tr>
<tr class="separator:ae97d95611924a0630a111543d2c8bf1e inherit pro_methods_a02629"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename MeshT&gt;<br />
class OpenMesh::Decimater::DecimaterT&lt; MeshT &gt;</h3>

<p><a class="el" href="a01240.html" title="Software related to mesh decimation. ">Decimater</a> framework. </p>
<dl class="section see"><dt>See also</dt><dd>BaseModT, <a class="el" href="a04316.html">Mesh Decimation Framework</a> </dd></dl>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="ae68360f349a3aeb6b8a01a7ea4af7ea3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae68360f349a3aeb6b8a01a7ea4af7ea3">&#9670;&nbsp;</a></span>decimate()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Mesh &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">size_t <a class="el" href="a02637.html">OpenMesh::Decimater::DecimaterT</a>&lt; Mesh &gt;::decimate </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>_n_collapses</em> = <code>0</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Perform a number of collapses on the mesh. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">_n_collapses</td><td>Desired number of collapses. If zero (default), attempt to do as many collapses as possible. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of collapses that were actually performed. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>This operation only marks the removed mesh elements for deletion. In order to actually remove the decimated elements from the mesh, a subsequent call to <a class="el" href="a02113.html#aba7fd4df59227f974b44111ac45e835f" title="garbage collection ">ArrayKernel::garbage_collection()</a> is required. </dd></dl>

</div>
</div>
<a id="a314edcd690ba54b6b77dde411e04262a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a314edcd690ba54b6b77dde411e04262a">&#9670;&nbsp;</a></span>decimate_to()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename MeshT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">size_t <a class="el" href="a02637.html">OpenMesh::Decimater::DecimaterT</a>&lt; MeshT &gt;::decimate_to </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>_n_vertices</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Decimate the mesh to a desired target vertex complexity. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">_n_vertices</td><td>Target complexity, i.e. desired number of remaining vertices after decimation. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of collapses that were actually performed. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>This operation only marks the removed mesh elements for deletion. In order to actually remove the decimated elements from the mesh, a subsequent call to <a class="el" href="a02113.html#aba7fd4df59227f974b44111ac45e835f" title="garbage collection ">ArrayKernel::garbage_collection()</a> is required. </dd></dl>

</div>
</div>
<a id="a3f9e5d0abce8d73b67cf2bbf17700241"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f9e5d0abce8d73b67cf2bbf17700241">&#9670;&nbsp;</a></span>decimate_to_faces()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Mesh &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">size_t <a class="el" href="a02637.html">OpenMesh::Decimater::DecimaterT</a>&lt; Mesh &gt;::decimate_to_faces </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>_n_vertices</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>_n_faces</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Attempts to decimate the mesh until a desired vertex or face complexity is achieved. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">_n_vertices</td><td>Target vertex complexity. </td></tr>
    <tr><td class="paramname">_n_faces</td><td>Target face complexity. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of collapses that were actually performed. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>Decimation stops as soon as either one of the two complexity bounds is satisfied. </dd>
<dd>
This operation only marks the removed mesh elements for deletion. In order to actually remove the decimated elements from the mesh, a subsequent call to <a class="el" href="a02113.html#aba7fd4df59227f974b44111ac45e835f" title="garbage collection ">ArrayKernel::garbage_collection()</a> is required. </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>OpenMesh/Tools/Decimater/<a class="el" href="a00551_source.html">DecimaterT.hh</a></li>
<li>OpenMesh/Tools/Decimater/<a class="el" href="a00554_source.html">DecimaterT_impl.hh</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<hr>
<address>
<small>
<a href="http://www.rwth-graphics.de" style="text-decoration:none;">
</a>
Project <b>OpenMesh</b>, 
&copy;&nbsp; Computer Graphics Group, RWTH Aachen.
Documentation generated using 
<a class="el" href="http://www.doxygen.org/index.html">
<b>doxygen</b>
</a>.
</small>
</address>
</body>
</html>
